From: Ian Jackson Date: Tue, 18 Mar 2014 13:45:25 +0000 (+0000) Subject: libxc: Fix buffer length for get_suspend_file X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5400 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=fe1a6bc7546d006384157b6b004efdd3b9d283c5;p=xen.git libxc: Fix buffer length for get_suspend_file Declaring a formal parameter to have an array type doesn't result in the parameter actually having an array type. The type is "adjusted" to a pointer. (C99 6.9.1(7), 6.7.5.3.) So the use of sizeof in xc_suspend.c:get_suspend_file was wrong. Instead, use the #define. Also get rid of the array size, as it is misleading. Newer versions of gcc warn about the erroneous code: xc_suspend.c:39:25: error: argument to 'sizeof' in 'snprintf' call is the same expression as the destination; did you mean to provide an explicit length? [-Werror=sizeof-pointer-memaccess] Reported-By: Julien Grall Signed-off-by: Ian Jackson CC: Ian Campbell CC: Julien Grall -- v2: Actually change the declaration of buf. --- diff --git a/tools/libxc/xc_suspend.c b/tools/libxc/xc_suspend.c index 84ee1397d1..200d381d00 100644 --- a/tools/libxc/xc_suspend.c +++ b/tools/libxc/xc_suspend.c @@ -34,9 +34,9 @@ #define SUSPEND_FILE_BUFLEN (sizeof(SUSPEND_LOCK_FILE) + 10) -static void get_suspend_file(char buf[SUSPEND_FILE_BUFLEN], int domid) +static void get_suspend_file(char buf[], int domid) { - snprintf(buf, sizeof(buf), SUSPEND_LOCK_FILE, domid); + snprintf(buf, SUSPEND_FILE_BUFLEN, SUSPEND_LOCK_FILE, domid); } static int lock_suspend_event(xc_interface *xch, int domid, int *lockfd)